home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / c / egem_210 / egem / source / e_gem.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-25  |  24.5 KB  |  1,099 lines

  1. #ifndef __E_GEM_LIB__
  2. #define __E_GEM_LIB__
  3.  
  4. #define E_GEM_VERSION    "2.10"
  5.  
  6. #ifdef __GNUC__
  7. /* Anpassung der Enhanced GEM-Library an GNU CC + MiNT-Lib */
  8.  
  9. #ifndef __MINT_LIB__
  10. #define __MINT_LIB__    /* MiNT-Lib wird beim GCC verwendet! */
  11. #endif    /* !__MINT_LIB__ */
  12.  
  13. #ifdef __CREATE_E_GEM_LIB__
  14. #define __TCC_COMPAT__
  15. #endif    /* __CREATE_E_GEM_LIB__ */
  16.  
  17. #define reg            /* Keine register Variablen */
  18. #define cdecl        /* Kein `cdecl' unter GCC */
  19.  
  20. extern short _global[];
  21.  
  22. #define AES_VERSION    gl_ap_version   /* Enhält unter GCC die AES-Version */
  23. #define GLOBAL        _global
  24. #define INTIN        _intin
  25. #define INTOUT        _intout
  26. #define ADDRIN        ((void **)(&_ptsin[0]))
  27.  
  28. #define vq_gdos        vq_vgdos
  29.  
  30. int __aes__(unsigned long);        /* Def. aus der GemLib. */
  31. #define _aes(a, b) __aes__(b)
  32.  
  33. extern short _app;
  34. #endif    /* __GNUC__ */
  35.  
  36.  
  37. #ifdef LATTICE
  38. /* Anpassung der Enhanced GEM-Library an Lattice C + MiNT-Lib */
  39.  
  40. #ifndef __MINT_LIB__
  41. #define __MINT_LIB__        /* MiNT-Lib wird bei Lattice verwendet! */
  42. #endif    /* !__MINT_LIB__ */
  43.  
  44. #ifdef __CREATE_E_GEM_LIB__
  45. #define __TCC_COMPAT__
  46. #endif    /* __CREATE_E_GEM_LIB__ */
  47.  
  48. #define __TCC_GEMLIB__
  49.  
  50. #define reg                    /* Keine register Variablen */
  51. #define cdecl    __stdargs    /* `__stdargs' entspricht `cdecl' in Lattice C */
  52.  
  53. extern short _AESglobal[];
  54. #define AES_VERSION    _AESglobal[0]   /* Enhält unter Lattice C die AES-Version */
  55. #define GLOBAL        _AESglobal
  56. #define INTIN        _AESintin
  57. #define INTOUT        _AESintout
  58. #define ADDRIN        _AESaddrin
  59.  
  60. extern short _app;
  61. #endif    /* LATTICE */
  62.  
  63.  
  64. #ifdef __PUREC__
  65. /* Anpassung an Pure C */
  66.  
  67. #define reg register
  68.  
  69. #ifdef __MINT_LIB__
  70. #define __TCC_COMPAT__
  71. #define __TCC_GEMLIB__
  72.  
  73. typedef struct
  74. {
  75.     int        contrl[15];
  76.     int        global[15];
  77.     int        intin[132];
  78.     int        intout[140];
  79.     void    *addrin[16];
  80.     void    *addrout[16];
  81. } GEMPARBLK;
  82.  
  83. extern GEMPARBLK _GemParBlk;
  84.  
  85. #endif    /* __MINT_LIB__ */
  86.  
  87. #define GLOBAL            _GemParBlk.global
  88. #define AES_VERSION        GLOBAL[0]
  89. #define INTIN            _GemParBlk.intin
  90. #define INTOUT            _GemParBlk.intout
  91. #define ADDRIN            _GemParBlk.addrin
  92.  
  93. extern int _app;
  94. extern void _aes(int dummy,long);
  95.  
  96. #endif    /* __PUREC__ */
  97.  
  98. #include <stdlib.h>
  99.  
  100. #ifdef __MINT_LIB__
  101. #ifdef __PUREC__
  102. #define short        int
  103. #endif    /* __PUREC__ */
  104.  
  105. #include <unistd.h>
  106. #include <fcntl.h>
  107. #include <osbind.h>
  108. #include <aesbind.h>
  109. #include <vdibind.h>
  110.  
  111. #define DTA            _DTA
  112. #define    d_attrib    dta_attribute
  113. #define d_fname        dta_name
  114. #define d_length    dta_size
  115.  
  116. /* Macros zum Umsetzen geringer MiNT-GEM-Lib-Abweichungen von der
  117.    Pure C und Lattice C GEM-Lib. */
  118.  
  119. #if (defined(__GNUC__) || defined(LATTICE)) && defined(__CREATE_E_GEM_LIB__)
  120. #define evnt_timer(a,b) evnt_timer(((unsigned long)b << 16) + (unsigned short)a)
  121. #endif    /* (__GNUC__ || LATTICE) && __CREATE_E_GEM_LIB__ */
  122.  
  123. #else    /* __MINT_LIB__ */
  124.  
  125. #ifdef __PUREC__
  126. #include <tos.h>
  127. #include <aes.h>
  128. #include <vdi.h>
  129. #endif    /* __PUREC__ */
  130. #endif    /* !__MINT_LIB__ */
  131.  
  132. #undef CH_EXIT
  133. #define CH_EXIT                90
  134.  
  135. #ifndef WF_BEVENT /* MTOS-1.01-Erweiterungen bereits definiert ? */
  136.  
  137. #define WF_BEVENT             24
  138. #define WM_UNTOPPED         30
  139. #define WM_ONTOP             31
  140.  
  141. #define AP_TERM             50
  142.  
  143. #endif    /* WF_BEVENT */
  144.  
  145. #ifndef WF_ICONIFY /* MTOS-1.08-Erweiterungen bereits definiert ? */
  146.  
  147. #define WF_ICONIFY            26
  148. #define WF_UNICONIFY        27
  149. #define WF_UNICONIFYXYWH    28
  150.  
  151. #define WM_ICONIFY            34
  152. #define WM_UNICONIFY        35
  153. #define WM_ALLICONIFY        36
  154.  
  155. #define SMALLER                0x4000
  156.  
  157. #define AP_DRAGDROP            63
  158.  
  159. #define NO_DD            -100
  160. #define NO_RECEIVER        -101
  161.  
  162. #define    DD_OK            0
  163. #define DD_NAK            1
  164. #define DD_EXT            2
  165. #define DD_LEN            3
  166. #define DD_TRASH        4
  167. #define DD_PRINTER        5
  168. #define DD_CLIPBOARD    6
  169.  
  170. #define DD_TIMEOUT        3000            /* timeout in milliseconds */
  171.  
  172. #define DD_NUMEXTS        8
  173. #define DD_EXTSIZE        32L
  174. #define DD_NAMEMAX        128                /* max size of a drag&drop item name */
  175.  
  176. #define DD_HDRMAX        (8+DD_NAMEMAX)    /* max length of a drag&drop header */
  177.  
  178. int appl_search(int,char*,int*,int*);
  179. int appl_getinfo(int,int *,int *,int *,int *);
  180.  
  181. #endif    /* WF_BEVENT */
  182.  
  183. #ifdef __MINT_LIB__
  184.  
  185. typedef struct
  186. {
  187.     int ev_mflags,ev_mbclicks,ev_bmask,ev_mbstate,ev_mm1flags,
  188.         ev_mm1x,ev_mm1y,ev_mm1width,ev_mm1height,ev_mm2flags,
  189.         ev_mm2x,ev_mm2y,ev_mm2width,ev_mm2height;
  190.     unsigned int ev_mtlocount,ev_mthicount;
  191.     int ev_mwich,ev_mmox,ev_mmoy,ev_mmobutton,ev_mmokstate,
  192.         ev_mkreturn,ev_mbreturn;
  193.     int ev_mmgpbuf[8];
  194. } EVENT;
  195.  
  196. int     EvntMulti(EVENT *evnt_struct);
  197.  
  198. #endif    /* __MINT_LIB__ */
  199.  
  200. #ifndef GDOS_PROP
  201.  
  202. #define GDOS_PROP       0            /* Speedo GDOS font */
  203. #define GDOS_MONO       1            /* Speedo GDOS font, force monospace output */
  204. #define GDOS_BITM       2            /* GDOS bit map font */
  205.  
  206. #define te_fontid       te_junk1    /* GDOS font id */
  207. #define te_fontsize     te_junk2    /* GDOS font size in points */
  208.  
  209. #endif
  210.  
  211. #ifndef WHITEBAK
  212. #define WHITEBAK    64
  213. #endif
  214.  
  215. #ifndef DRAW3D
  216. #define DRAW3D        128
  217. #endif
  218.  
  219. typedef struct
  220. {
  221.     int ev_mflags;
  222.     int ev_mb1clicks,ev_mb1mask,ev_mb1state;
  223.     int ev_mm1flags,ev_mm1x,ev_mm1y,ev_mm1width,ev_mm1height;
  224.     int ev_mm2flags,ev_mm2x,ev_mm2y,ev_mm2width,ev_mm2height;
  225.     unsigned int ev_mt1locount,ev_mt1hicount;
  226.     int ev_mwich,ev_mmox,ev_mmoy,ev_mmobutton,ev_mmokstate,ev_mkreturn,ev_mb1return;
  227.     int ev_mmgpbuf[8];
  228.     int ev_mb2clicks,ev_mb2mask,ev_mb2state;
  229.     int ev_mm3flags,ev_mm3x,ev_mm3y,ev_mm3width,ev_mm3height;
  230.     int ev_mm4flags,ev_mm4x,ev_mm4y,ev_mm4width,ev_mm4height;
  231.     long ev_mt2count,ev_mt3count,ev_mt4count;
  232.     long ev_mt1last,ev_mt2last,ev_mt3last,ev_mt4last;
  233.     int ev_mb2return;
  234. } XEVENT;
  235.  
  236. #ifndef __RC_OBJ_C__
  237. #define ev_mbclicks        ev_mb1clicks
  238. #define ev_mbmask        ev_mb1mask
  239. #define ev_bmask        ev_mb1mask
  240. #define ev_mbstate        ev_mb1state
  241. #define ev_mbreturn        ev_mb1return
  242.  
  243. #define ev_mtlocount    ev_mt1locount
  244. #define ev_mthicount    ev_mt1hicount
  245. #define ev_mtlast        ev_mt1last
  246. #endif    /* __RC_OBJ_C__ */
  247.  
  248. #define MU_TIMER1        MU_TIMER
  249. #define    MU_TIMER2        0x0040
  250. #define MU_TIMER3        0x0080
  251. #define MU_TIMER4        0x0100
  252.  
  253. #define MU_M3            0x0200
  254. #define MU_M4            0x0400
  255.  
  256. #define MU_BUTTON1        MU_BUTTON
  257. #define MU_BUTTON2        0x0800
  258.  
  259. #define MU_GET_MESSAG    0x4000
  260. #define    MU_NO_HANDLER    0x8000
  261.  
  262. #define WF_RETURN        1
  263. #define WF_WINX            22360
  264. #define    WF_WINXCFG        22361
  265.  
  266. #ifndef WF_OWNER
  267. #define WF_OWNER        20
  268. #endif
  269.  
  270. #ifndef WF_BOTTOM
  271. #define WF_BOTTOM        25
  272. #define WM_BOTTOMED        33
  273. #endif
  274.  
  275. #ifndef WM_M_BDROPPED
  276. #define BACKDROP        0x2000
  277. #define WM_M_BDROPPED    100
  278. #endif
  279.  
  280. #define WM_SHADED        22360
  281. #define WM_UNSHADED        22361
  282.  
  283. #define COOKIE_XBRA        0x58425241L        /* `XBRA' */
  284. #define COOKIE_VSCR        0x56534352L        /* `VSCR' */
  285. #define COOKIE_MAGX        0x4D616758L        /* `MagX' */
  286. #define COOKIE_MINT        0x4d694e54L        /* 'MiNT' */
  287. #define COOKIE_ICFS        0x49434653L        /* 'ICFS' */
  288.  
  289. #define ICF_GETSIZE        0x0000
  290. #define ICF_GETPOS        0x0001
  291. #define ICF_FREEPOS        0x0002
  292. #define ICF_FREEALL        0x0100
  293. #define ICF_INFO        0x0200
  294. #define ICF_CONFIG        0x0201
  295. #define ICF_SETSIZE        0x0202
  296. #define ICF_SETSPACE    0x0203
  297.  
  298. #define OBJC_EDITED        0x7a00
  299. #define OBJC_CHANGED    0x7a01
  300. #define OBJC_SIZED        0x7a02
  301. #define OBJC_DRAGGED    0x7a03
  302.  
  303. #define XACC_AV_INIT    0x7a10
  304. #define XACC_AV_EXIT    0x7a11
  305.  
  306. #define WIN_CHANGED        0x7a21
  307. #define WIN_SCROLLED    0x7a22
  308. #define WIN_TOPPED        0x7a23
  309. #define WIN_CLOSED        0x7a24
  310. #define WIN_VSLSIZE        0x7a25
  311. #define WIN_HSLSIZE        0x7a26
  312. #define WIN_NAME        0x7a27
  313. #define WIN_INFO        0x7a28
  314. #define WIN_HSLIDE        0x7a29
  315. #define WIN_VSLIDE        0x7a2a
  316.  
  317. #define CENTER            1
  318. #define MOUSEPOS        2
  319. #define XPOS            3
  320. #define YPOS            4
  321. #define XYPOS            5
  322. #define OBJPOS            6
  323.  
  324. #define POPUP_BTN        0
  325. #define POPUP_CYCLE        1
  326. #define POPUP_CHECK        2
  327. #define POPUP_BTN_CHK    (POPUP_BTN|POPUP_CHECK)
  328. #define POPUP_CYCLE_CHK    (POPUP_CYCLE|POPUP_CHECK)
  329. #define POPUP_RADIO        POPUP_BTN_CHK
  330. #define POPUP_SELECT    POPUP_BTN
  331.  
  332. #define FLY_DIAL        1
  333. #define WIN_DIAL        2
  334. #define AUTO_DIAL        (FLY_DIAL|WIN_DIAL)
  335. #define MODAL            4
  336. #define FRAME            8
  337. #define NO_ICONIFY        16
  338.  
  339. #define    WD_HSLIDER        256
  340. #define    WD_VSLIDER        512
  341. #define WD_SIZER        1024
  342. #define WD_FULLER        2048
  343. #define WD_INFO            4096
  344. #define WD_SET_SIZE        8192
  345.  
  346. #define W_ABANDON        -1
  347. #define W_CLOSED        -2
  348.  
  349. #define CHECKBOX        1
  350. #define HEADER            2
  351. #define RADIO            3
  352. #define UNDERLINE        4
  353. #define HOTKEY            5
  354. #define CHKHOTKEY        6
  355. #define RBHOTKEY        7
  356. #define INDHOTKEY        8
  357. #define FLYDIAL            9
  358. #define TXTDEFAULT        10
  359. #define USERFLY            11
  360. #define HELP_BTN        12
  361. #define ATTR_TEXT        13
  362. #define CYCLE_BUTTON    14
  363. #define ARROW_LEFT        15
  364. #define ARROW_RIGHT        16
  365. #define ARROW_UP        17
  366. #define ARROW_DOWN        18
  367. #define UNDO_BTN        19
  368.  
  369. #define G_HOTKEY        (0x0100|G_USERDEF)
  370. #define G_IND            (0x0200|G_USERDEF)
  371. #define G_RB            (0x0300|G_USERDEF)
  372. #define G_CHK            (0x0400|G_USERDEF)
  373. #define G_FLY            (0x0500|G_USERDEF)
  374. #define G_XTEXT            (0x0600|G_USERDEF)
  375.  
  376. #define G_UNMODAL        0x4000
  377. #define G_MODAL            0x8000
  378.  
  379. #define G_TYPE            (~(G_MODAL|G_UNMODAL))
  380.  
  381. #define NO_SCALING        0
  382. #define SCALING            1
  383. #define TEST_SCALING    2
  384. #define DARK_SCALING    4
  385.  
  386. #undef    NULL
  387. #define NULL            ((void *)0)
  388.  
  389. #define BOOLEAN        boolean
  390. #define DIALMODE    dialmode
  391.  
  392. typedef struct
  393. {
  394.     char            *string;
  395.     USERBLK         text_blk;
  396.     int             font_id,font_size,color,center,mode;
  397. } X_TEXT;
  398.  
  399. typedef struct
  400. {
  401.     long    cookie;
  402.     long    product;
  403.     int        version;
  404.     int        x,y,w,h;
  405. } INFOVSCR;
  406.  
  407. typedef struct
  408. {
  409.     long    cookie_id;
  410.     long    cookie_value;
  411. } COOKIE;
  412.  
  413. typedef enum
  414. {
  415.     FAIL=-1,
  416.     FALSE,
  417.     TRUE
  418. } boolean;
  419.  
  420. typedef enum
  421. {
  422.     CLOSED,
  423.     OPENED,
  424.     FLYING,
  425.     WINDOW,
  426.     WIN_MODAL
  427. } dialmode;
  428.  
  429. #define LINE_START    -5
  430. #define LINE_END    -4
  431. #define WIN_START    -3
  432. #define WIN_END        -2
  433. #define WIN_SCROLL    -1
  434.  
  435. #define PAGE_LEFT    WA_LFPAGE
  436. #define PAGE_UP        WA_UPPAGE
  437. #define    PAGE_RIGHT    WA_RTPAGE
  438. #define PAGE_DOWN    WA_DNPAGE
  439. #define LINE_LEFT    WA_LFLINE
  440. #define LINE_UP        WA_UPLINE
  441. #define LINE_RIGHT    WA_RTLINE
  442. #define LINE_DOWN    WA_DNLINE
  443.  
  444. typedef struct
  445. {
  446.     int scroll,obj,tbar_l,tbar_r,tbar_u,tbar_d;
  447.     int px_hpos,px_vpos,px_hline,px_vline;
  448.     int    hpos,vpos,hsize,vsize,hpage,vpage,hscroll,vscroll;
  449. } SCROLL;
  450.  
  451. #define ICONIFIED    1
  452. #define SHADE        2
  453. #define ICFS        4
  454.  
  455. typedef struct
  456. {
  457.     MFORM    *mouse_inform,*mouse_outform;
  458.     int        handle,gadgets,mouse_in,mouse_out,inside,vdi_handle;
  459.     char    iconified,fulled,opened,av_win;
  460.     int        posnr,min_w,min_h;
  461.     GRECT    max,curr,prev,work,icf_work;
  462.     int        sl_hpos,sl_vpos,sl_hsize,sl_vsize;
  463.     char    *name,*info,*icon_name;
  464.     OBJECT    *icon;
  465.     void    *redraw,*dialog;
  466.     SCROLL    *scroll;
  467. } WIN;
  468.  
  469. #define AV_DRAG        0
  470. #define AV_START    1
  471. #define MINT_DRAG    2
  472.  
  473. typedef struct
  474. {
  475.     int        dd_type,dd_originator;
  476.     int        dd_mx,dd_my,dd_kstate;
  477.     char    *dd_name,*dd_args,*dd_mem,dd_ext[4];
  478.     long    dd_size;
  479.     WIN        *dd_win;
  480. } DRAG_DROP;
  481.  
  482. typedef struct
  483. {
  484.     char    *text,*masc,*valid;
  485.     int        text_x,text_y,text_w,text_h;
  486.     int        edit_x,edit_y,edit_w,edit_h;
  487.     int        crs_x,crs_y,cw,ch;
  488. } EDINFO;
  489.  
  490. #define MAX_PATH    256
  491. #define MAX_EDIT    256
  492.  
  493. typedef struct
  494. {
  495.     int        valid;
  496.     GRECT    area;
  497.     MFDB    mfdb;
  498.     void    *mem;
  499. } RC_RECT;
  500.  
  501. typedef struct
  502. {
  503.     DIALMODE    di_flag;
  504.     OBJECT        *di_tree;
  505.     RC_RECT        di_rc;
  506.     int            di_fly,di_drawn,di_mode;
  507.     int            di_ed_obj,di_ed_index,di_cursor,di_insert;
  508.     int            di_default,di_inddef,di_help,di_undo,di_ed_cnt,di_taken;
  509.     int            di_xy_off,di_wh_off;
  510.     char        *di_title,di_undobuff[MAX_EDIT];
  511.     void        *di_slider;
  512.     GRECT        di_edit;
  513.     WIN            *di_win;
  514. } DIAINFO;
  515.  
  516. typedef struct
  517. {
  518.     int scan,state,cmd;
  519. } SLKEY;
  520.  
  521. typedef struct
  522. {
  523.     DIAINFO        *sl_info;
  524.     int            sl_parent;
  525.     int            sl_slider;
  526.     int            sl_dec,sl_inc,sl_pos,sl_page,sl_max;
  527.     char        sl_vh,sl_mode;
  528.     int            sl_delay,sl_speed;
  529.     void        (*sl_do)(OBJECT*,int,int,int,int);
  530.     SLKEY        *sl_keys;
  531.     int            sl_keys_cnt;
  532. } SLINFO;
  533.  
  534. #define SL_UP        -1
  535. #define SL_DOWN        -2
  536. #define SL_PG_UP    -3
  537. #define SL_PG_DN    -4
  538. #define SL_START    -5
  539. #define SL_END        -6
  540.  
  541. typedef struct
  542. {
  543.     DIAINFO        *p_info;
  544.     OBJECT        *p_menu;
  545.     int            p_parent;
  546.     int         p_button;
  547.     int            p_cycle;
  548.     boolean        p_wrap,p_set;
  549. } POPUP;
  550.  
  551. #ifndef __MINT_LIB__
  552. typedef struct
  553. {
  554.     int            v_x1;
  555.     int            v_y1;
  556.     int            v_x2;
  557.     int            v_y2;
  558. } VRECT;
  559. #endif    /* !__MINT_LIB__ */
  560.  
  561. #ifdef __MINT_LIB__
  562. typedef struct
  563. {
  564.     char        *unshift;
  565.     char        *shift;
  566.     char        *capslock;
  567. } KEYTAB;
  568.  
  569. #ifdef __PUREC__
  570. #define Keytbl    (KEYTAB *) Keytbl
  571. #endif    /* __PUREC__ */
  572. #endif    /* __MINT_LIB__ */
  573.  
  574. typedef struct
  575. {
  576.     int            dummy;
  577.     int            *image;
  578. } RS_IMDOPE;
  579.  
  580. typedef struct
  581. {
  582.     int            *but_on,*but_off;
  583. } BUTTON;
  584.  
  585. typedef struct
  586. {
  587.     int            *hi_on,*hi_off,*lo_on,*lo_off;
  588. } IMAGE;
  589.  
  590. typedef struct
  591. {
  592.     int            count;
  593.     IMAGE         *image;
  594. } IMAGES;
  595.  
  596. extern    int    ap_id,menu_id,grhandle,x_handle;
  597. extern    int    gr_cw,gr_ch,gr_bw,gr_bh,gr_sw,gr_sh;
  598. extern    int    max_w,max_h,planes,colors,colors_available;
  599. extern    int multi,aes_version,winx,magx,mint,AvServer;
  600. extern  int small_font,small_font_id,ibm_font,ibm_font_id,fonts_loaded;
  601. extern    int menu_available,search;
  602.  
  603. extern    GRECT    desk;
  604. extern    VRECT    clip;
  605. extern    MFDB    *screen;
  606. extern    OBJECT    *iconified;
  607.  
  608. void    ob_dostate(OBJECT*,int,int);
  609. void    ob_undostate(OBJECT*,int,int);
  610. int        ob_isstate(OBJECT*,int,int);
  611.  
  612. #define ob_setstate(t,o,s)    t[o].ob_state = s
  613.  
  614. int        ob_disable(DIAINFO *,OBJECT *,int,int,int);
  615. int        ob_select(DIAINFO *,OBJECT *,int,int,int);
  616.  
  617. #define SET_STATE    1
  618. #define CLEAR_STATE    0
  619. #define FLIP_STATE    -1
  620.  
  621. void    ob_doflag(OBJECT*,int,int);
  622. void    ob_undoflag(OBJECT*,int,int);
  623. int        ob_isflag(OBJECT*,int,int);
  624.  
  625. #define ob_setflags(t,o,f)    t[o].ob_flags = f
  626.  
  627. void    ob_xywh(OBJECT*,int,GRECT*);
  628.  
  629. char    *ob_get_text(OBJECT*,int,int);
  630. void    ob_set_text(OBJECT*,int,char*);
  631. void    ob_clear_edit(OBJECT *);
  632.  
  633. int        ob_set_hotkey(OBJECT*,int,char);
  634. char    ob_get_hotkey(OBJECT*,int);
  635.  
  636. int        ob_draw(DIAINFO*,int);
  637. int        ob_draw_chg(DIAINFO*,int,GRECT*,int,boolean);
  638. int        ob_draw_list(DIAINFO*,int*,GRECT*);
  639.  
  640. void    ob_draw_dialog(OBJECT*,int,int,int,int);
  641. void    ob_undraw_dialog(OBJECT*,int,int,int,int);
  642.  
  643. int        ob_radio(OBJECT*,int,int);
  644. int        ob_get_parent(OBJECT*,int);
  645.  
  646. #ifdef __GNUC__
  647. int        rc_inside(int,int,GRECT*);
  648. #define rc_grect_to_array grect_to_array
  649. #else    /* __GNUC__ */
  650. void    rc_grect_to_array(GRECT*,int*);
  651. #ifdef __PUREC__
  652. int        rc_copy(GRECT*,GRECT*);
  653. int        rc_equal(GRECT*,GRECT*);
  654. int        rc_intersect(GRECT*,GRECT*);
  655. int        rc_inside(int,int,GRECT*);
  656. #else
  657. #define rc_inside(a,b,c)    (rc_inside(a,b,c) ? 1 : 0)
  658. #endif    /* __PUREC__ */
  659. #endif    /* !__GNUC__ */
  660.  
  661. void    rc_array_to_grect(int*,GRECT*);
  662.  
  663. void    rc_sc_copy(GRECT*,int,int,int);
  664. void    rc_sc_clear(GRECT*);
  665. void    rc_sc_invert(GRECT*);
  666. int        rc_sc_scroll(GRECT*,int,int,GRECT*);
  667. int        rc_sc_save(GRECT*,RC_RECT*);
  668. int        rc_sc_freshen(int,int,RC_RECT*);
  669. int        rc_sc_restore(int,int,RC_RECT*,int);
  670.  
  671. void    scrp_clear(int);
  672. long    scrp_length(void);
  673. int        scrp_find(char*,char*);
  674. int        scrp_path(char*,char*);
  675. void    scrp_changed(int,long);
  676.  
  677. /* Definition des Clipboard-Protokolls */
  678.  
  679. #ifndef SC_CHANGED
  680. #define    SC_CHANGED    80
  681.  
  682. #define    SCF_INDEF    0x0000
  683. #define SCF_DBASE    0x0001
  684. #define SCF_TEXT    0x0002
  685. #define SCF_VECTOR    0x0004
  686. #define SCF_RASTER    0x0008
  687. #define SCF_SHEET    0x0010
  688. #define SCF_SOUND    0x0020
  689. #endif
  690.  
  691. int        menu_install(OBJECT*,int);
  692. void    menu_enable(boolean);
  693. void    menu_item_enable(int,int);
  694. void    menu_select(int,int);
  695. boolean menu_dropped(void);
  696.  
  697. void     graf_busy_mouse(void);
  698. void    graf_set_slider(SLINFO*,OBJECT*,int);
  699.  
  700. #define HOR_SLIDER            0
  701. #define    VERT_SLIDER            1
  702.  
  703. #define GRAF_SET_ARROWS        1
  704. #define GRAF_SET_SIZE_POS    2
  705. #define GRAF_DRAW_SLIDER    4
  706.  
  707. #define GRAF_SET            (GRAF_SET_ARROWS|GRAF_SET_SIZE_POS)
  708. #define GRAF_DRAW            (GRAF_SET|GRAF_DRAW_SLIDER)
  709.  
  710. #define SL_STEP                0
  711. #define SL_LINEAR            1
  712. #define SL_LOG                2
  713. #define SL_EXP                3
  714.  
  715. void    graf_arrows(SLINFO*,OBJECT*,int);
  716. void    graf_rt_slidebox(SLINFO*,int,int);
  717.  
  718. int        graf_rt_rubberbox(int,int,GRECT*,int*,int*,void(*foo)(int*));
  719.  
  720. int        Event_Multi(XEVENT*);
  721. void    Event_Timer(int,int);
  722. void    Event_Handler(int (*init)(XEVENT *,int),int (*handler)(XEVENT *));
  723.  
  724. int        X_Form_Do(DIAINFO**);
  725.  
  726. int        appl_xgetinfo(int,int *,int *,int *,int *);
  727. int        appl_getfontinfo(int,int *,int *,int *);
  728.  
  729. #ifdef  __PUREC__
  730. int        wind_xget(int, int, int *, int *, int *,int *);
  731. #else
  732. #define    wind_xget(hdl,field,p1,p2,p3,p4)    wind_get(hdl,field,p1,p2,p3,p4)
  733. #endif
  734.  
  735. boolean    init_gem(char*,char*,char*,int,int,int);
  736. void    exit_gem(int);
  737.  
  738. boolean open_work(int*,int*);
  739. void     close_work(int);
  740.  
  741. boolean    open_rsc(char*,char*,char*,char*,int,int,int);
  742. void    close_rsc(int);
  743.  
  744. void    rsrc_calc(OBJECT*,int,int,int);
  745. void    rsrc_init(int,int,int,int,int,char**,long*,BITBLK*,long*,ICONBLK*,TEDINFO*,OBJECT*,OBJECT**,RS_IMDOPE*,int,int);
  746.  
  747. void    fix_objects(OBJECT*,int,int,int);
  748. void    scale_image(OBJECT*,int,int,int);
  749. void    trans_image(OBJECT*);
  750.  
  751. void    vsf_aespattern(int,int,int,int);
  752.  
  753. void    vs_attr(void);
  754. void    v_set_text(int,int,int,int*);
  755. void    v_set_mode(int);
  756. void    v_set_line(int,int);
  757. void    v_set_fill(int,int,int);
  758. void    v_aespattern(int,int,int);
  759.  
  760. void    save_clipping(int *);
  761. void    restore_clipping(int *);
  762.  
  763. boolean open_dialog(OBJECT*,DIAINFO*,char*,char*,OBJECT*,boolean,boolean,int,int,SLINFO **);
  764. void    close_dialog(DIAINFO*,boolean);
  765. void     close_all_dialogs(void);
  766.  
  767. WIN     *open_window(char *,char *,char *,OBJECT *,int,int,int,int,GRECT*,GRECT*,SCROLL*,void (*foo)(WIN *,GRECT *));
  768. void    window_reinit(WIN *,char *,char *,char *,int);
  769. void    window_top(WIN *);
  770. void    window_bottom(WIN *);
  771. void    window_size(WIN *,GRECT *);
  772. void    window_slider(WIN *,int,int,int);
  773. void    window_name(WIN *,char *,char *);
  774. void    window_set_mouse(WIN *,int,int,MFORM *,MFORM *);
  775. void    window_mouse(WIN *);
  776. void    window_info(WIN *,char *);
  777. void    window_border(int,int,int,int,int,GRECT *);
  778. void    window_calc(int,int,GRECT *,GRECT *);
  779. WIN        *window_find(int,int);
  780. void    redraw_window(WIN *,GRECT *);
  781. void    scroll_window(WIN *,int,GRECT*);
  782. void    window_scroll_slider(WIN *,int);
  783. int        close_window(WIN *,int);
  784. void    close_all_windows(void);
  785.  
  786. WIN        *get_window(int);
  787. WIN        *get_top_window(void);
  788.  
  789. int        window_first(WIN *,GRECT *);
  790. int        window_next(WIN *,GRECT *);
  791.  
  792. void    CycleCloseWindows(char,char,int,int);
  793.  
  794. int        get_dialog_info(int *,int *,int *,DIAINFO **);
  795.  
  796. int        xdialog(OBJECT*,char*,char*,OBJECT*,boolean,boolean,int);
  797. int        xalert(int,int,int,BITBLK *,int,int,int,char *,char *,char *);
  798.  
  799. /* System-/Applikations-modale Alert-Box */
  800.  
  801. #define SYS_MODAL            0
  802. #define APPL_MODAL            1
  803.  
  804. /* Ausrichtung der Buttons */
  805.  
  806. #define BUTTONS_CENTERED    0
  807. #define BUTTONS_LEFT        1
  808. #define BUTTONS_RIGHT        2
  809.  
  810. /* Definition der wichtigsten Alert-Icons als Makros */
  811.  
  812. #define    X_ICN_NONE        -1
  813. #define X_ICN_MAX        17
  814.  
  815. #define    X_ICN_STOP        12
  816. #define    X_ICN_QUESTION    10
  817. #define X_ICN_ALERT        14
  818.  
  819. #define X_ICN_DISC_ERR    5
  820. #define X_ICN_ERROR        6
  821. #define X_ICN_FLOPPY    9
  822. #define X_ICN_DISC        8
  823. #define X_ICN_INFO        13
  824. #define    X_ICN_PRT_ERR    15
  825.  
  826. int        Popup(POPUP*,int,int,int,int,int *,int);
  827.  
  828. void    dial_colors(int,int,int,int,int,int,int,int);
  829. void    dial_options(boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean,boolean);
  830.  
  831. void    title_options(boolean,int,int);
  832.  
  833. void    radio_image(int,BUTTON*);
  834. void    check_image(int,BUTTON*);
  835. void    arrow_image(int,BUTTON*,BUTTON*,BUTTON*,BUTTON*);
  836. void    cycle_image(int,BUTTON*);
  837.  
  838. void    create_cookie(COOKIE*,long,long);
  839. boolean    new_cookie(COOKIE*);
  840. boolean    get_cookie(long,long*);
  841. void    remove_cookie(long);
  842. void    move_cookiejar(long*,long);
  843. long    cookie_size(void);
  844.  
  845. #ifndef SH_WDRAW
  846. #define SH_WDRAW    72
  847. #endif
  848.  
  849. void    drive_changed(int);
  850. int        FileSelect(char *,char *,char *,char *,int);
  851. char    *GetFilename(char *);
  852. char    *GetExtension(char *);
  853. char    *GetPath(char *);
  854. int        GetDrive(char *);
  855. char    *MakeFullpath(char *,char *, char *);
  856.  
  857. #ifdef __PUREC__
  858. char    *getenv(const char*);    /* Funktionen gibt es in stdlib.h */
  859. int        putenv(const char*);
  860. #endif    /* __PUREC__ */
  861.  
  862. int        scan_2_ascii(int,int);
  863. char    UpperChar(char);
  864. char    LowerChar(char);
  865. char    ascii_box(char *);
  866.  
  867. int        min(int,int);
  868. int        max(int,int);
  869. void    Min(int*,int);
  870. void    Max(int*,int);
  871.  
  872. void    mfdb(MFDB*,int*,int,int,int,int);
  873. long    mfdb_size(MFDB*);
  874.  
  875. /* Drag & Drop */
  876.  
  877. int        SendDragDrop(int,int,int,char*,char*,long,char *);
  878. void    SetDragDrop(int,char*);
  879.  
  880. /* XAcc-2- und AV-Protokoll */
  881.  
  882. #define XACC        1
  883.  
  884. #define MSGGROUP1    0x01
  885. #define MSGGROUP2    0x02
  886.  
  887. #define XACCVERSION    0x21
  888. #define XACC_LEVEL    (MSGGROUP1|MSGGROUP2)
  889.  
  890. #ifndef ACC_ID
  891. #define ACC_ID        0x400
  892. #define ACC_OPEN    0x401
  893. #define ACC_CLOSE    0x402
  894. #define ACC_ACC        0x403
  895. #define ACC_EXIT    0x404
  896.  
  897. #define ACC_ACK        0x500
  898. #define ACC_TEXT    0x501
  899. #define ACC_KEY        0x502
  900. #define ACC_META    0x503
  901. #define ACC_IMG        0x504
  902. #endif
  903.  
  904. #define    X_MSG_TEXT    0x1
  905. #define    X_MSG_META    0x2
  906. #define    X_MSG_IMG    0x4
  907.  
  908. #define AV            2
  909.  
  910. #define MSG_SETSTATUS        0x001
  911. #define MSG_START            0x002
  912.  
  913. #define    MSG_SENDKEY            0x001
  914. #define MSG_ASKFILEFONT        0x002
  915. #define MSG_ASKCONFONT        0x004
  916. #define MSG_ASKOBJECT        0x008
  917. #define MSG_OPENWIND        0x010
  918. #define MSG_STARTPROG        0x020
  919. #define MSG_ACCWINDOPEN        0x040
  920. #define    MSG_STATUS            0x080
  921. #define MSG_COPY_DRAGGED    0x100
  922. #define MSG_PATH_UPDATE        0x200
  923. #define MSG_EXIT            0x400
  924.  
  925. #ifndef AV_PROTOKOLL
  926. #define AV_PROTOKOLL        0x4700
  927. #define AV_GETSTATUS        0x4703
  928. #define AV_STATUS            0x4704
  929. #define AV_SENDKEY            0x4710
  930. #define AV_ASKFILEFONT        0x4712
  931. #define AV_ASKCONFONT        0x4714
  932. #define AV_ASKOBJECT        0x4716
  933. #define AV_OPENCONSOLE        0x4718
  934. #define AV_OPENWIND            0x4720
  935. #define AV_STARTPROG        0x4722
  936. #define AV_ACCWINDOPEN        0x4724
  937. #define AV_ACCWINDCLOSED    0x4726
  938. #define AV_COPY_DRAGGED        0x4728
  939. #define AV_PATH_UPDATE        0x4730
  940. #define AV_WHAT_IZIT        0x4732
  941. #define AV_DRAG_ON_WINDOW    0x4734
  942. #define AV_EXIT                0x4736
  943.  
  944. #define VA_PROTOSTATUS        0x4701
  945. #define VA_SETSTATUS        0x4705
  946. #define VA_START            0x4711
  947. #define VA_FILEFONT            0x4713
  948. #define VA_CONFONT            0x4715
  949. #define VA_OBJECT            0x4717
  950. #define VA_CONSOLEOPEN        0x4719
  951. #define VA_WINDOPEN            0x4721
  952. #define VA_PROGSTART        0x4723
  953. #define VA_DRAGACCWIND        0x4725
  954. #define VA_COPY_COMPLETE    0x4729
  955. #define VA_THAT_IZIT        0x4733
  956. #define VA_DRAG_COMPLETE    0x4735
  957.  
  958. #define    VA_OB_UNKNOWN        0
  959. #define VA_OB_TRASHCAN      1
  960. #define VA_OB_SHREDDER      2
  961. #define VA_OB_CLIPBOARD     3
  962. #define VA_OB_FILE          4
  963. #define VA_OB_FOLDER        5
  964. #define VA_OB_DRIVE            6
  965. #define VA_OB_WINDOW        7
  966. #endif
  967.  
  968. #define MAX_XACCS    32
  969.  
  970. typedef struct
  971. {
  972.     int        flag,id,version,menu_id,av_msgs,va_msgs;
  973.     char    name[10],*xname,*xdsc;
  974. } XAcc;
  975.  
  976. void         *GetMsgBuffer(long);
  977.  
  978. XAcc        *find_xacc_xdsc(int,char*);
  979. XAcc        *find_id(int);
  980. XAcc        *find_app(int);
  981.  
  982. void        XAccBroadCast(int *);
  983. int            XAccSendAck(int,int);
  984. int            XAccSendKey(int,int,int);
  985. int            XAccSendText(int,char *);
  986. int            XAccSendMeta(int,int,char*,long);
  987. int            XAccSendImg(int,int,char*,long);
  988.  
  989. int            AvSendMsg(int,int,int*);
  990.  
  991. int         AppLoaded(char *);
  992.  
  993. /* Menü-Protokoll */
  994.  
  995. #ifndef WM_CLOSED
  996. #define WM_CLOSED        0x0016
  997. #endif
  998.  
  999. #ifndef WM_FULLED
  1000. #define WM_FULLED        0x0017
  1001. #endif
  1002.  
  1003. #ifndef WM_SAVE
  1004. #define WM_SAVE            0x1000
  1005. #define WM_SAVEAS        0x1001
  1006. #define WM_PRINT        0x1002
  1007. #define WM_UNDO            0x1003
  1008. #define WM_CUT            0x1004
  1009. #define WM_COPY            0x1005
  1010. #define WM_PASTE        0x1006
  1011. #define WM_SELECTALL    0x1007
  1012. #define WM_FIND            0x1008
  1013. #define WM_REPLACE        0x1009
  1014. #define WM_FINDNEXT        0x100a
  1015. #define WM_HELP            0x100b
  1016. #define WM_DELETE       0x100c
  1017. #endif
  1018.  
  1019. /* View-Protokoll */
  1020.  
  1021. #ifndef VIEW_FILE
  1022. #define VIEW_FILE        0x5600
  1023. #define VIEW_FAILED        0x5601
  1024. #define VIEW_OPEN        0x5602
  1025. #define VIEW_CLOSED        0x5603
  1026. #define VIEW_DATA        0x5604
  1027. #define VIEW_GETMFDB    0x5610
  1028. #define VIEW_SETMFDB    0x5611
  1029. #define VIEW_MFDB        0x5612
  1030.  
  1031. #define VIEWERR_ERROR    0
  1032. #define VIEWERR_SIZE    1
  1033. #define VIEWERR_COLOR    2
  1034. #define VIEWERR_WID        3
  1035. #define VIEWERR_MEM        4
  1036. #endif
  1037.  
  1038. /* wichtige Scan-Codes */
  1039.  
  1040. #define sl_key(s,a)    ((s<<8)|a)
  1041.  
  1042. #define SCANESC        1
  1043. #define SCANTAB        15
  1044. #define SCANRET     28
  1045. #define SCANDEL     83
  1046. #define SCANBS        14
  1047. #define SCANENTER    114
  1048.  
  1049. #define SCANHELP    98
  1050. #define SCANUNDO    97
  1051. #define SCANINS     82
  1052. #define SCANHOME    71
  1053.  
  1054. #define SCANUP        72
  1055. #define SCANDOWN    80
  1056.  
  1057. #define SCANLEFT    75
  1058. #define SCANRIGHT    77
  1059.  
  1060. #define CTRLLEFT    115
  1061. #define CTRLRIGHT    116
  1062.  
  1063. #define SCANF1        59
  1064. #define SCANF2        60
  1065. #define SCANF3        61
  1066. #define SCANF4        62
  1067. #define SCANF5        63
  1068. #define SCANF6        64
  1069. #define SCANF7        65
  1070. #define SCANF8        66
  1071. #define SCANF9        67
  1072. #define SCANF10        68
  1073.  
  1074. #define CTRLF1        84
  1075. #define CTRLF2        85
  1076. #define CTRLF3        86
  1077. #define CTRLF4        87
  1078. #define CTRLF5        88
  1079. #define CTRLF6        89
  1080. #define CTRLF7        90
  1081. #define CTRLF8        91
  1082. #define CTRLF9        92
  1083. #define CTRLF10        93
  1084.  
  1085. /* Makros für Mauszeiger */
  1086.  
  1087. #define MouseArrow()        graf_mouse(ARROW,NULL)
  1088. #define MouseCursor()        graf_mouse(TEXT_CRSR,NULL)
  1089. #define MouseBee()            graf_mouse(BUSYBEE,NULL)
  1090. #define MouseHourGlass()    graf_mouse(HOURGLASS,NULL)
  1091. #define MousePointHand()    graf_mouse(POINT_HAND,NULL)
  1092. #define MouseFlatHand()        graf_mouse(FLAT_HAND,NULL)
  1093. #define MouseThinCross()    graf_mouse(THIN_CROSS,NULL)
  1094. #define MouseThickCross()    graf_mouse(THICK_CROSS,NULL)
  1095. #define MouseOutlineCross()    graf_mouse(OUTLN_CROSS,NULL)
  1096.  
  1097. void MouseOn(void);
  1098. void MouseOff(void);
  1099.  
  1100. #endif    /* __E_GEM_LIB__ */
  1101.